#ifndef RTP_TO_PCAP_H
#define RTP_TO_PCAP_H


#include <stdint.h>
// RtpToPcap不是线程安全的，需要上层保证线程安全性
class  RtpToPcap {

public:

	// 创建句柄
	static RtpToPcap* create();
	static void destroy(RtpToPcap* pPcap);

	RtpToPcap() = default;
	virtual ~RtpToPcap() = default;

	// open和close应当成对使用
	virtual int32_t open(const char* filename) = 0;

	/* 
		// 以下2项必填
		pData, 指向socket收到的载荷
		bytes, pData对应的有效长度
		
		// 以下6项选填，如果不填写将使用默认参数
		srcIp, srcPort, 本地IP和端口
		dstIp, dstPort, 远端IP和端口
		tv_sec, tv_usec, time_t或gettimeofday的秒数和微秒数, 两者同时为0时由RtpToPcap获取当前系统时间
	*/
    virtual void writeRtpPacket(const uint8_t* pData, uint32_t bytes,
        uint32_t srcIp = 1, uint16_t srcPort = 2, uint32_t dstIp = 3, uint16_t dstPort = 4,
        uint32_t tv_sec = 0, uint32_t tv_usec = 0) = 0;

	// 在调用close后，允许再次调用open新建另一个抓包文件
	virtual int32_t close() = 0;
};

#endif
